package santeclair.referentiel.optique.referentiel.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.stereotype.Repository;

import santeclair.lunar.framework.dao.jpa.impl.FwkGenericJpaDAO;
import santeclair.referentiel.optique.config.Constant;
import santeclair.referentiel.optique.model.GrilleTarifaire;
import santeclair.referentiel.optique.referentiel.dao.GrilleTarifaireDAO;

@Repository
public class GrilleTarifaireDAOImpl extends FwkGenericJpaDAO<GrilleTarifaire> implements GrilleTarifaireDAO {

    @PersistenceContext(unitName = Constant.PERSISTENCE_UNIT_NAME)
    private EntityManager entityManager;

    @Override
    public Class<GrilleTarifaire> getEntityClass() {
        return GrilleTarifaire.class;
    }

    @Override
    public EntityManager getEntityManager() {
        return entityManager;
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<GrilleTarifaire> findByCodeFabricant(String codeFabricantOptique) {

        StringBuffer sb = new StringBuffer();
        sb.append("from GrilleTarifaire as grilleTarifaire left join fetch grilleTarifaire.fabricantOptique ");
        sb.append("WHERE grilleTarifaire.fabricantOptique.codeFabricantOptique = :pCodeFabricant");

        Query query = entityManager.createQuery(sb.toString());
        query.setParameter("pCodeFabricant", codeFabricantOptique);

        return query.getResultList();
    }

}
